/*
    编写一个模拟的人员信息管理系统，每个人需要记录三个信息（整数类型的id，字符串表示的姓名（每个人的姓名不会超过9个字符），单精度浮点类型的工资）从用户处得到多个人员信息并把他们记录在文件中（先记录一个人的所有信息然后再记录下一个人的所有信息）
*/
#include <stdio.h>
#include <string.h>
int main() {
    int id = 0, choice = 1, oldid = -1;
    char name[10] = {};
    float money = 0.0f;
    FILE *p_file = fopen("person.bin","a+b");
    if(p_file) {
	do{
    	    printf("请输入该人员的id：");
    	    scanf("%d",&id);
	    scanf("%*[^\n]");
	    scanf("%*c");
	    rewind(p_file);
	    while (fread(&oldid,sizeof(int),1,p_file)) {;
		if(id == oldid) {
		    break;
		}
		fseek(p_file, 14, SEEK_CUR);
	    }
	    fseek(p_file, 0,SEEK_END);
	    if(id == oldid ) {
		continue;
	    }
    	    printf("请输入该人员的姓名：");
    	    fgets(name,10,stdin);
	    if(strlen(name) == 9 && name[8] != '\n') {
		scanf("%*[^\n]");
		scanf("%*c");
	    }
    	    printf("请输入该人员的工资：");
    	    scanf("%f",&money);
    	    fwrite(&id,sizeof(int),1,p_file);
    	    fwrite(name,sizeof(char),10,p_file);
    	    fwrite(&money,sizeof(float),1,p_file);
	    printf("是否需要输入下一个人员信息？0表示不需要，1表示需要");
	    scanf("%d",&choice);
	} while(choice);
	fclose(p_file);
	p_file = NULL;
    }
    return 0;
}
